/**
 * 文件名称: touch.h
 * 摘    要: 与触摸相关的操作函数头文件
 * 来    源: huenrong
 *
 * 当前版本: 1.0 
 * 作    者: huenrong
 * 完成日期: 2019-07-28
 **/


#ifndef __TOUCH_H
#define __TOUCH_H

#ifdef __cplusplus
extern "C" {
#endif

// 定义系统中的触摸屏设备的设备名
#define     TOUCHSCREEN_DEVICE      "/dev/input/event2"     // 使用“cat /proc/bus/input/devices”命令查看对应的设备名

#define     TOUCH_INFO_MAX_LENGTH   256                     // 存储触摸信息的最大长度

// 触摸不同区域的返回值
enum TOUCH_AREA_VALUE
{
    // 中间有效绘制区域
    DRAW_AREA = 0,          // 有效绘制区域

    // 左边颜色选择区域
    RED_PEN_AREA = 1,       // 红色笔区域
    GREEN_PEN_AREA = 2,     // 绿色笔区域
    BLUE_PEN_AREA = 3,      // 蓝色笔区域
    BLACK_PEN_AREA = 4,     // 黑色笔区域

    // 右边功能选择区域
    THIN_LINE_AREA = 11,    // 细线区域
    THICK_LINE_AREA = 12,   // 粗线区域
    ERASER_AREA = 13,       // 橡皮擦区域
    RESET_AREA = 14,        // 复位区域
};

// 记录触摸位置
struct touch_position
{
    int x;
    int y;
};

// 记录触摸信息(触摸位置和为处理的触摸位置数量)
// 取数据从头部位置开始, 记录数据尾部位置开始
struct touch_info
{
    // 未处理的触摸位置(将不需要处理的队列位置赋值为-1)
    struct touch_position position[TOUCH_INFO_MAX_LENGTH];
    unsigned int header;        // 触摸位置队列头
    unsigned int tail;          // 触摸位置队列尾
};



/******************************************************************************
函数名称: creat_touch_thread
函数功能: 创建触摸操作处理线程
函数参数: 无
函数返回: 成功: 返回0
          失败: 返回-1
******************************************************************************/
int creat_touch_thread(void);


#ifdef __cplusplus
}
#endif

#endif /* __TOUCH_H */
